package com.todo.strategy.online.iface.backend.response;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author zhangwenxiang
 * @date 2024/3/17 19:40
 * @description
 */
@Data
@Schema(title = "用户攻略关联出参", description = "用户攻略关联出参")
public class UserStrategyRelationResp {


    @JsonSerialize(using = ToStringSerializer.class)
    @Schema(title = "计划id", description = "计划id")
    private Long planId;

    @Schema(title = "当前第几天", description = "当前第几天")
    private Integer currentDay;

    @Schema(title = "当天关联列表", description = "当天关联列表")
    private List<DayRelation> dayRelation;


    @Data
    public static class DayRelation {

        @JsonSerialize(using = ToStringSerializer.class)
        @Schema(title = "主键id", description = "主键id")
        private Long relationId;
        @Schema(title = "关联内容", description = "关联内容")
        private RelationInfo relationInfo;
        @Schema(title = "关联内容", description = "关联内容")
        private RelationContent relationContent;
    }

    @Data
    public static class RelationInfo {

        @Schema(title = "标题", description = "标题")
        private String title;

        @Schema(title = "备注", description = "备注")
        private String remark;

        @Schema(title = "关联类型", description = "关联类型")
        private Integer relationType;

        @JsonSerialize(using = ToStringSerializer.class)
        @Schema(title = "关联id", description = "关联id")
        private Long relationId;

        @Schema(title = "当天开始时间", description = "当天开始时间")
        private String startTime;

        @Schema(title = "关联名称", description = "关联名称")
        private String relationName;


        @Schema(title = "时间花费 - 分钟", description = "时间花费 - 分钟")
        private Integer timeCost;

        @Schema(title = "是否出游", description = "是否出游")
        private Integer isTravel;

    }

    @Data
    public static class RelationContent {

        /**
         * 标题
         */
        @Schema(title = "标题", description = "标题")
        private String title;
        /**
         * 内容
         */
        @Schema(title = "内容", description = "内容")
        private String content;
        /**
         * 出行意见
         */
        @Schema(title = "出行意见", description = "出行意见")
        private Suggest travelSuggest;
        /**
         * 评分
         */
        @Schema(title = "评分", description = "评分")
        private Integer score;
        /**
         * 花费时间(行程时间、等待时间、游玩时间)
         * 花费金额
         * 关联话题列表
         * 关联图片列表
         * 关联视频信息
         */
        @Schema(title = "扩展信息", description = "扩展信息")
        private ExtraInfo extraInfo;

    }

    @Data
    public static class ExtraInfo {
        /**
         * 金额花费
         */
        @Schema(title = "金额花费", description = "金额花费")
        private BigDecimal moneyCost;
        /**
         * 时间花费/小时
         */
        @Schema(title = "时间花费/小时", description = "时间花费/小时")
        private Integer timeCost;
        /**
         * 关联图片列表
         */
        @Schema(title = "关联图片列表", description = "关联图片列表")
        private List<String> imgList;
    }

    @Data
    public static class Suggest {
        /**
         * 旅游建议
         */
        @Schema(title = "旅游建议", description = "旅游建议")
        private String travelSuggest;
        /**
         * 景点建议
         */
        @Schema(title = "景点建议", description = "景点建议")
        private String sightSuggest;
        /**
         * 踩坑点
         */
        @Schema(title = "踩坑点", description = "踩坑点")
        private String defectSuggest;
        /**
         * 槽点
         */
        @Schema(title = "槽点", description = "槽点")
        private String disclose;
    }

}
